//
//  TFBannerView.h
//  TFFoundation
//
//  Created by TFAppleWork-Summer on 2017/3/29.
//  Copyright © 2017年 TFAppleWork-Summer. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "TFPageControl.h"
#import "TFBannerDefaultCell.h"

@class TFBannerView;

/**
 横幅view代理
 */
@protocol TFBannerViewDelegate <NSObject>

@required;

- (NSInteger)numberOfBannerInBannerView:(nonnull TFBannerView *)bannerView;

@optional;

/**
 返回横幅的样式view

 @param bannerView 横幅view
 @param index 索引
 @return UICollectionViewCell
 */
- (nonnull __kindof UICollectionViewCell *)bannerView:(nonnull TFBannerView *)bannerView bannerCellAtIndex:(NSInteger)index;

/**
 返回横幅的默认样式view，若不实现返回自定义view的代理，则会创建一个默认的cell，在此代理中，通过cell中的imageView设置图片。

 @param bannerView 横幅view
 @param bannerDefaultCell 默认cell
 @param index 索引
 */
- (void)bannerView:(nonnull TFBannerView *)bannerView bannerDefaultCell:(nonnull TFBannerDefaultCell *)bannerDefaultCell atIndex:(NSInteger)index;

/**
 点击了某个bannerView

 @param bannerView 横幅view
 @param index 索引
 */
- (void)bannerView:(nonnull TFBannerView *)bannerView didSelectBannerAtIndex:(NSInteger)index;

@end

/**
 横幅view
 */
@interface TFBannerView : UIView

/**
 collectionview
 */
@property (nonatomic, strong, readonly, nonnull) UICollectionView *collectionView;

/**
 是否循环滚动，默认为NO
 */
@property (nonatomic, assign) BOOL loopScroll;

/**
 是否自动滚动，默认为NO
 */
@property (nonatomic, assign) BOOL autoScroll;

/**
 自动滚动时间间隔
 */
@property (nonatomic, assign) NSTimeInterval autoScrollTimeInterval;

/**
 底部pageControl
 */
@property (nonatomic, strong, readonly, nonnull) TFPageControl *pageControl;

/**
 当前页
 */
@property (nonatomic, assign) NSInteger currentPage;

/**
 代理者
 */
@property (nonatomic, weak, nullable) id<TFBannerViewDelegate> delegate;

/**
 注册cell的方法，必须设置。

 @param registerClass cell对应的class
 @param identifier 重用标识符
 */
- (void)registerClass:(nonnull Class)registerClass forBannerCellWithReuseIdentifier:(nonnull NSString *)identifier;

/**
 获取重用的cell，使用此方法必须要设置重用标识符

 @param identifier 重用标识符
 @param index 索引
 @return UICollectionViewCell
 */
- (nonnull __kindof UICollectionViewCell *)dequeueReusableBannerCellWithReuseIdentifier:(nonnull NSString *)identifier atIndex:(NSInteger)index;

/**
 重载
 */
- (void)reloadData;

@end
